Diffusion Map with Euclidean Distance
# # d.matrix <- dist(t(hpf[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])]), method = "euclidean")
#
# # d.matrix <- dist(t(hpf[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])]), method = "euclidean")
# # write.csv(as.matrix(d.matrix), "../results/euc_all.csv")
# d.matrix <- read.csv("../results/euc_all.csv", row.names = 1)
# # heat.map <- Heatmap(
# # as.matrix(d.matrix),
# # name = "euclidean distance",
# # km = 1,
# # show_row_names = F,
# # show_column_names = F,
# # cluster_rows = T
# # ) +
# # Heatmap(c(
# # rep("spinal cord", 400),
# # rep("neural crest", 400),
# # rep("pharyngeal arch", 400),
# # rep("somatic meso", 400)
# # ),
# # name = "clusters",
# # width = unit(5, "mm"))
# #
# # heat.map
# # rm(heat.map)
#
# dm <- DiffusionMap(data = data.frame(covar = c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), distance = as.dist(d.matrix))))
#
# # dm <- DiffusionMap(data = data.frame(covar = c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))), distance = as.dist(d.matrix))
#
# plot.DiffusionMap(dm, col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))
#
# # plot.DiffusionMap(dm, col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
#
# dpt <- DPT(dm)
#
# plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))
# plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))
# plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))
# plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
df_temp <- data.matrix(hpf[hvg,])
df_temp <- ifelse(df_temp > 0, 1, 0)
df_temp <- data.frame(df_temp)
sp.df <- df_temp[,hpf_sp]
nc.df <- df_temp[,hpf_nc]
pa.df <- df_temp[,hpf_pa]
sm.df <- df_temp[,hpf_sm]
ms.df <- df_temp[,hpf_ms]
gl.df <- df_temp[,hpf_gl]
ed.df <- df_temp[,hpf_ed]
en.df <- df_temp[,hpf_en]
sp_groups <- apply(sp.df, 1, mean)
sp_size <- apply(sp.df, 1, function(x) (1/1+(sd(x)))^4)
nc_groups <- apply(nc.df, 1, mean)
nc_size <- apply(nc.df, 1, function(x) (1/1+(sd(x)))^4)
pa_groups <- apply(pa.df, 1, mean)
pa_size <- apply(pa.df, 1, function(x) (1/1+(sd(x)))^4)
sm_groups <- apply(sm.df, 1, mean)
sm_size <- apply(sm.df, 1, function(x) (1/1+(sd(x)))^4)
gl_groups <- apply(gl.df, 1, mean)
gl_size <- apply(gl.df, 1, function(x) (1/1+(sd(x)))^4)
ed_groups <- apply(ed.df, 1, mean)
ed_size <- apply(ed.df, 1, function(x) (1/1+(sd(x)))^4)
en_groups <- apply(en.df, 1, mean)
en_size <- apply(en.df, 1, function(x) (1/1+(sd(x)))^4)
GGM as GRN (tasks 2, 3, 6)
rho = 0.05
g <- ggm1(data = data.frame(t(df)), rho = 0.05)
l <- g$graph$graph
t.matrix <- g$wi
t.matrix <- scale(t.matrix, center=FALSE, scale=colSums(t.matrix))
# d.matrix <- dist.matrix(df[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], m = 1, k = 5)
# d.matrix <- dist.matrix(df[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], m = 1, k = 5)
# write.csv(as.matrix(d.matrix), "../results/ggm_rho005_all.csv")
d.matrix <- read.csv("../results/ggm_rho005_all.csv", row.names = 1)
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = F,
# cluster_rows = T
# ) + Heatmap(c(
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
# rm(heat.map)
dm <- DiffusionMap(data = hpf[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], distance = as.dist(d.matrix))
dpt <- DPT(dm)
plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

# dm <- DiffusionMap(data = hpf[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], distance = as.dist(d.matrix))
#
# dpt <- DPT(dm)
#
# plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
lay <- layout_nicely(l)
# Germline
graph.col(graph = l, lay= lay, grp = (as.numeric(gl_groups) + 1), sz = gl_size)

# Epidermal
graph.col(graph = l, lay= lay, grp = (as.numeric(ed_groups) + 1), sz = ed_size)

# Endoderm
graph.col(graph = l, lay= lay, grp = (as.numeric(en_groups) + 1), sz = en_size)

# Somatic Meso
graph.col(graph = l, lay= lay, grp = (as.numeric(sm_groups) + 1), sz = sm_size)

# Spinal Cord
graph.col(graph = l, lay= lay, grp = (as.numeric(sp_groups) + 1), sz = sp_size)

# Neural Crest
graph.col(graph = l, lay= lay, grp = (as.numeric(nc_groups) + 1), sz = nc_size)

# Pharyngeal Arch
graph.col(graph = l, lay= lay, grp = (as.numeric(pa_groups) + 1), sz = pa_size)

rho = 0.1
g <- ggm1(data = data.frame(t(df)), rho = 0.1)
# g$graph$network
l <- g$graph$graph
t.matrix <- g$wi
t.matrix <- scale(t.matrix, center=FALSE, scale=colSums(t.matrix))
# d.matrix <- dist.matrix(df[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], m = 1, k = 5)
# d.matrix <- dist.matrix(df[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], m = 1, k = 5)
# write.csv(as.matrix(d.matrix), "../results/ggm_rho01_all.csv")
d.matrix <- read.csv("../results/ggm_rho01_all.csv", row.names = 1)
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = T,
# cluster_rows = T
# ) + Heatmap(c(
# rep("germline", 30),
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400),
# rep("epidermal", 400),
# rep("endoderm", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = F,
# cluster_rows = T
# ) + Heatmap(c(
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
dm <- DiffusionMap(data = hpf[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], distance = as.dist(d.matrix))
dpt <- DPT(dm)
plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

# dm <- DiffusionMap(data = hpf[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], distance = as.dist(d.matrix))
#
# dpt <- DPT(dm)
#
# plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
lay <- layout_nicely(l)
# Germline
graph.col(graph = l, lay= lay, grp = (as.numeric(gl_groups) + 1), sz = gl_size)

# Epidermal
graph.col(graph = l, lay= lay, grp = (as.numeric(ed_groups) + 1), sz = ed_size)

# Endoderm
graph.col(graph = l, lay= lay, grp = (as.numeric(en_groups) + 1), sz = en_size)

# Somatic Meso
graph.col(graph = l, lay= lay, grp = (as.numeric(sm_groups) + 1), sz = sm_size)

# Spinal Cord
graph.col(graph = l, lay= lay, grp = (as.numeric(sp_groups) + 1), sz = sp_size)

# Neural Crest
graph.col(graph = l, lay= lay, grp = (as.numeric(nc_groups) + 1), sz = nc_size)

# Pharyngeal Arch
graph.col(graph = l, lay= lay, grp = (as.numeric(pa_groups) + 1), sz = pa_size)

rho = 0.2
g <- ggm1(data = data.frame(t(df)), rho = 0.2)
# g$graph$network
l <- g$graph$graph
t.matrix <- g$wi
t.matrix <- scale(t.matrix, center=FALSE, scale=colSums(t.matrix))
# d.matrix <- dist.matrix(df[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], m = 1, k = 5)
# d.matrix <- dist.matrix(df[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], m = 1, k = 5)
#
#
# write.csv(as.matrix(d.matrix), "../results/ggm_rho02_all.csv")
d.matrix <- read.csv("../results/ggm_rho02_all.csv", row.names = 1)
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = T,
# cluster_rows = T
# ) + Heatmap(c(
# rep("germline", 30),
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400),
# rep("epidermal", 400),
# rep("endoderm", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = F,
# cluster_rows = T
# ) + Heatmap(c(
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
# rm(heat.map)
dm <- DiffusionMap(data = hpf[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], distance = as.dist(d.matrix))
dpt <- DPT(dm)
plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

# dm <- DiffusionMap(data = hpf[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], distance = as.dist(d.matrix))
#
# dpt <- DPT(dm)
#
# plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
lay <- layout_nicely(l)
# Germline
graph.col(graph = l, lay= lay, grp = (as.numeric(gl_groups) + 1), sz = gl_size)

# Epidermal
graph.col(graph = l, lay= lay, grp = (as.numeric(ed_groups) + 1), sz = ed_size)

# Endoderm
graph.col(graph = l, lay= lay, grp = (as.numeric(en_groups) + 1), sz = en_size)

# Somatic Meso
graph.col(graph = l, lay= lay, grp = (as.numeric(sm_groups) + 1), sz = sm_size)

# Spinal Cord
graph.col(graph = l, lay= lay, grp = (as.numeric(sp_groups) + 1), sz = sp_size)

# Neural Crest
graph.col(graph = l, lay= lay, grp = (as.numeric(nc_groups) + 1), sz = nc_size)

# Pharyngeal Arch
graph.col(graph = l, lay= lay, grp = (as.numeric(pa_groups) + 1), sz = pa_size)

rho = 0.3
g <- ggm1(data = data.frame(t(df)), rho = 0.3)
# g$graph$network
l <- g$graph$graph
t.matrix <- g$wi
t.matrix <- scale(t.matrix, center=FALSE, scale=colSums(t.matrix))
# d.matrix <- dist.matrix(df[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], m = 1, k = 5)
#
# # d.matrix <- dist.matrix(df[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], m = 1, k = 5)
# write.csv(as.matrix(d.matrix), "../results/ggm_rho03_all.csv")
d.matrix <- read.csv("../results/ggm_rho03_all.csv", row.names = 1)
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = T,
# cluster_rows = T
# ) + Heatmap(c(
# rep("germline", 30),
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400),
# rep("epidermal", 400),
# rep("endoderm", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
# heat.map <- Heatmap(
# d.matrix,
# name = "distance",
# km = 1,
# show_row_names = F,
# show_column_names = F,
# cluster_rows = T
# ) + Heatmap(c(
# rep("spinal cord", 400),
# rep("neural crest", 400),
# rep("pharyngeal arch", 400),
# rep("somatic meso", 400)
# ),
# name = "clusters",
# width = unit(5, "mm"))
#
# heat.map
# rm(heat.map)
dm <- DiffusionMap(data = hpf[, c(hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400])], distance = as.dist(d.matrix))
dpt <- DPT(dm)
plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400))))

# dm <- DiffusionMap(data = hpf[, c(hpf_gl[1:30], hpf_sp[1:400], hpf_nc[1:400], hpf_pa[1:400], hpf_sm[1:400], hpf_ed[1:400], hpf_en[1:400])], distance = as.dist(d.matrix))
#
# dpt <- DPT(dm)
#
# plot.DPT(dpt, dcs = c(1, 2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(1, 2), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
# plot.DPT(dpt, dcs = c(2, 3), col = factor(c(rep("germline", 30), rep("spinal cord", 400), rep("neural crest", 400), rep("pharyngeal arch", 400), rep("somatic meso", 400), rep("epidermal", 400), rep("endoderm", 400))))
lay <- layout_nicely(l)
# Germline
graph.col(graph = l, lay= lay, grp = (as.numeric(gl_groups) + 1), sz = gl_size)

# Epidermal
graph.col(graph = l, lay= lay, grp = (as.numeric(ed_groups) + 1), sz = ed_size)

# Endoderm
graph.col(graph = l, lay= lay, grp = (as.numeric(en_groups) + 1), sz = en_size)

# Somatic Meso
graph.col(graph = l, lay= lay, grp = (as.numeric(sm_groups) + 1), sz = sm_size)

# Spinal Cord
graph.col(graph = l, lay= lay, grp = (as.numeric(sp_groups) + 1), sz = sp_size)

# Neural Crest
graph.col(graph = l, lay= lay, grp = (as.numeric(nc_groups) + 1), sz = nc_size)

# Pharyngeal Arch
graph.col(graph = l, lay= lay, grp = (as.numeric(pa_groups) + 1), sz = pa_size)
